package com.aloda.service;

import com.aloda.dto.*;
import com.aloda.entity.User;
import com.aloda.result.PageResult;
import com.aloda.vo.*;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
* @author aloda
* @description 针对表【user(用户表)】的数据库操作Service
* @createDate 2024-10-21 08:47:29
*/
public interface UserService extends IService<User> {

    /**
     * 分页查询用户
     * @param userPageDTO
     * @return
     */
    PageResult<UserPageVO> pageQuery(UserPageDTO userPageDTO);

    /**
     * 根据标签名列表查询用户
     * @param userPageByTagDTO 分页查询dto
     * @return
     */
    List<UserSearchVO> searchUsersByTags(UserPageByTagDTO userPageByTagDTO);

    /**
     * 用户注册
     * @param userRegisterDTO
     */
    void userRegister(UserRegisterDTO userRegisterDTO);

    /**
     * 用户登录
     * @param userLoginDTO
     * @return
     */
    UserLoginVO userLogin(UserLoginDTO userLoginDTO);

    /**
     * 获取用户主页信息
     * @return
     */
    UserInfoVO getUserPageInfo();

    /**
     * 获取用户设置页信息
     * @return
     */
    UserSetVO getUserSetInfo();

    /**
     * 用户退出
     * @param token
     */
    void userLogout(String token);

    /**
     * 用户修改个人基本信息
     * @param userSetDTO
     */
    void updateUserInfo(UserSetDTO userSetDTO);

    /**
     * 获取用户所有标签
     *
     * @return
     */
    List<TagSimpleVO> getUserTagList();

    /**
     * 用户修改自己的标签
     * @param tags
     */
    void updateUserTags(List<String> tags);
}
